package com.liu.jvm;

/**
 * @author LIU
 * @version 1.0
 * @description JVM堆内存
 * @date 2023/12/11 16:55
 *
 *  1. 设置对空间大小参数
 *      -Xms 设置堆空间（年轻代+老年代）的初始内存大小
 *          -X 是JVM运行参数
 *          ms 是memory start
 *      -Xmx 设置堆空间（年轻代+老年代）的最大内存大小
 *  2. 默认堆空间大小
 *      初始内存大小：物理电脑内存大小 / 64
 *      最大内存大小：物理电脑内存大小 / 4
 *  3. 手动设置 -Xms600M -Xmx600M
 *      开发中建议将内存初始大小和最大值设置成相同值，避免频繁扩容
 *  4. 查看设置参数
 *      一、jps   / jstat -gc 进程id
 *      二、-XX:+PrintGCDetails
 */
public class HeapSpaceInitial {
    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();
        //返回虚拟机中堆内存总量
        long initialMemory = runtime.totalMemory() / 1024 / 1024;
        // 返回java虚拟机试图使用的最大堆内存存量
        long maxMemory = runtime.maxMemory() / 1024 / 1024;

        System.out.println("-Xms :" + initialMemory + "M");
        System.out.println("-Xmx :" + maxMemory + "M");

//        System.out.println("系统内存大小 :" + initialMemory * 64.0 / 1024 + "G");
//        System.out.println("系统内存大小 :" + maxMemory * 4.0 / 1024 + "G");


        try {
            Thread.sleep(1000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
